package org.xlp.utils;

/**
 * <p>创建时间：2023年8月28日 下午11:20:21</p>
 * @author xlp
 * @version 1.0 
 * @Description 类描述
*/

public class ClassLoaderUtils {
	/**
	 * 返回要使用的默认类加载器：通常是线程上下文类加载器（如果可用）；
	 * 
	 * @return 返回默认类加载器（仅当系统类加载器不可访问时才返回null）
	 * @see Thread#getContextClassLoader()
	 * @see ClassLoader#getSystemClassLoader()
	 */
	public static ClassLoader getDefaultClassLoader() {
		ClassLoader cl = null;
		try {
			cl = Thread.currentThread().getContextClassLoader();
		} catch (Throwable ex) {
			// 当前线程上下文中获取类加载器失败
			XLPOutputInfoUtil.println(ex);
		}
		if (cl == null) {
			// 无线程上下文类加载器->使用此类的类加载器
			cl = ClassLoader.class.getClassLoader();
			if (cl == null) {
				// getClassLoader（）返回null表示使用启动类加载器
				// ClassLoader
				try {
					cl = ClassLoader.getSystemClassLoader();
				} catch (Throwable ex) {
					// 获取系统类加载器失败
					XLPOutputInfoUtil.println(ex);
				}
			}
		}
		return cl; 
	}
}
